package kr.pe.johnkim.carrotpoint.mobile.controller;

import kr.pe.johnkim.carrotpoint.mobile.domain.CarrotPointLog;
import kr.pe.johnkim.carrotpoint.mobile.service.CarrotPointLogService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * Carrot Point 로그 관련 controller 클래스 이다.
 *
 * @author : John_Kim <cale9797@gmail.com>
 * @date : 13. 2. 6.
 */
@Controller
@RequestMapping(value = "/carrotPointLogController")
public class CarrotPointLogController {

    // SLF4J Logging
    private Logger logger = LoggerFactory.getLogger(CarrotPointLogController.class);

    @Autowired
    private CarrotPointLogService carrotPointLogService;

    /**
     * 로그를 등록 한다.
     *
     * 1. memberId     : 사용자 아이디.
     * 2. merchantId   : 가맹점 아이디.
     * 3. viewName     : 현재 사용자가 위치한 화면 클래스 명.
     * 4. parameter01  : 사용자 전화번호.
     * 5. parameter02  : 사용자 닉네임.
     * 6. parameter03  : 위도.
     * 7. parameter04  : 경도.
     * 8. parameter05  : (검색일 경우) 검색어.
     * 9. registerDate : 등록 일자.
     *
     * @param carrotPointLog
     * @throws Exception
     */
    @RequestMapping(value = "/registerLog", method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.OK)
    @ResponseBody
    public void registerLog
            (@RequestBody CarrotPointLog carrotPointLog) throws Exception {
        logger.info("registerLog");

        logger.info("memberId     : {}", carrotPointLog.getMemberId());
        logger.info("merchantId   : {}", carrotPointLog.getMerchantId());
        logger.info("viewName     : {}", carrotPointLog.getViewName());
        logger.info("parameter01  : {}", carrotPointLog.getParameter01());
        logger.info("parameter02  : {}", carrotPointLog.getParameter02());
        logger.info("parameter03  : {}", carrotPointLog.getParameter03());
        logger.info("parameter04  : {}", carrotPointLog.getParameter04());
        logger.info("parameter05  : {}", carrotPointLog.getParameter05());
        logger.info("registerDate : {}", carrotPointLog.getRegisterDate());

        try {
            this.carrotPointLogService.registerLog(carrotPointLog);
            logger.info("success to register log.");
        } catch (Exception e) {
            logger.error("fail to register log.");
        }
    }
}
